package org.eae.eldf.dao.module.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.eae.eldf.dao.module.IModuleRoleDao;
import org.eae.eldf.dto.module.ModuleRoleDto;
import org.eae.eldf.dto.module.ModuleRoleQueryDto;
import org.eae.eldf.framework.dao.JdbcDaoImpl;
import org.eae.eldf.framework.pager.Pagination;
import org.springframework.stereotype.Repository;

@Repository
public class ModuleRoleDaoImpl extends JdbcDaoImpl implements IModuleRoleDao {

	/**
	 * 分页查询关联操作 ModuleRoleDto 重写方法 null ,searchValue ,searchValueInfo,
	 * searchValue、 searchValueInfo
	 */
	@Override
	public Pagination<ModuleRoleDto> pageModuleRoleList(
			Pagination<ModuleRoleDto> pager,  ModuleRoleQueryDto moduleRoleQueryDto) {
		StringBuffer sql = null;
		sql = new StringBuffer(
				" select r.module_role_id, r.role_name, r.role_desc,r.create_time,r.is_default_role, i.module_name,i.module_info_id ")
				.append(" from module_role r left join module_info i ")
				.append(" on r.module_info_id = i.module_info_id ")
				.append(" where r.is_delete = 0 ");
		List<Object> params = new ArrayList<Object>();
				
		// 判断模块名称不为空
		if (moduleRoleQueryDto!=null&&moduleRoleQueryDto.getModuleInfoId()!=null) {
			sql.append(" and i.module_info_id =" + moduleRoleQueryDto.getModuleInfoId() + " ");
		}
		// 判断角色名不为空
		if (moduleRoleQueryDto!=null&&StringUtils.isNotBlank(moduleRoleQueryDto.getRoleName())) {
			sql.append(" and r.role_name like ? ");
			params.add("%" + moduleRoleQueryDto.getRoleName() + "%");
		}

		if (StringUtils.isNotBlank(pager.getOrderBy())
				&& StringUtils.isNotBlank(pager.getSort())) {
			sql.append(" order by r." + pager.getOrderBy().toUpperCase() + " "
					+ pager.getSort().toUpperCase());
		} else {
			sql.append(" order by r.module_role_id asc");
		}

		return this.queryListByPage(pager, sql.toString(), params,
				ModuleRoleDto.class);
	}

}
